home *** CD-ROM | disk | FTP | other *** search
/ isnet Internet / Isnet Internet CD.iso / prog / hiz / 09 / 09.exe / adynware.exe / perl / lib / SelectSaver.pm < prev    next >
Encoding:
Perl POD Document  |  1999-12-28  |  954 b   |  49 lines

  1. package SelectSaver;
  2.  
  3. =head1 NAME
  4.  
  5. SelectSaver - save and restore selected file handle
  6.  
  7. =head1 SYNOPSIS
  8.  
  9.     use SelectSaver;
  10.  
  11.     {
  12.        my $saver = new SelectSaver(FILEHANDLE);
  13.     }
  14.  
  15.     {
  16.        my $saver = new SelectSaver;
  17.     }
  18.  
  19. =head1 DESCRIPTION
  20.  
  21. A C<SelectSaver> object contains a reference to the file handle that
  22. was selected when it was created.  If its C<new> method gets an extra
  23. parameter, then that parameter is selected; otherwise, the selected
  24. file handle remains unchanged.
  25.  
  26. When a C<SelectSaver> is destroyed, it re-selects the file handle
  27. that was selected when it was created.
  28.  
  29. =cut
  30.  
  31. require 5.000;
  32. use Carp;
  33. use Symbol;
  34.  
  35. sub new {
  36.     @_ >= 1 && @_ <= 2 or croak 'usage: new SelectSaver [FILEHANDLE]';
  37.     my $fh = select;
  38.     my $self = bless [$fh], $_[0];
  39.     select qualify($_[1], caller) if @_ > 1;
  40.     $self;
  41. }
  42.  
  43. sub DESTROY {
  44.     my $this = $_[0];
  45.     select $$this[0];
  46. }
  47.  
  48. 1;
  49.